1
พื้นฐานการพัฒนาเคอร์เนล CUDA
AI021Lesson 2
00:00

การพัฒนาเคอร์เนล CUDA เริ่มต้นจากการกำหนด เคอร์เนลซึ่งเป็นฟังก์ชันเฉพาะทางภาษา C++ ที่ถูกออกแบบให้ทำงานแบบขนานไปพร้อมกันบนคอร์จำนวนมากของ GPU NVIDIAฟังก์ชันเหล่านี้แสดงหน่วยงานพื้นฐานของการทำงานในโมเดลการเขียนโปรแกรม CUDA โดยทำหน้าที่เป็นสะพานเชื่อมระหว่างตรรกะของโฮสต์แบบลำดับกับการประมวลผลแบบขนานขนาดใหญ่บนอุปกรณ์

1. ตัวระบุ __global__

ตัวระบุ __global__ เป็นตัวระบุที่จำเป็นสำหรับ API ซึ่งบอกให้คอมไพเลอร์สร้างโค้ดสำหรับ GPU แต่ยังคงจุดเริ่มต้นของฟังก์ชันให้เห็นได้จากโปรเซสเซอร์ (CPU) ฟังก์ชันที่ทำงานบน GPU ซึ่งสามารถเรียกใช้จากโฮสต์ได้จะเรียกว่า เคอร์เนล

2. สภาพแวดล้อมการทำงาน

เคอร์เนลจะถูกส่งไปยังและดำเนินการบน หน่วยประมวลผลแบบสตรีมมิ่ง (SMs)SM เป็นเครื่องประมวลผลหลักภายใน GPU NVIDIA ที่รับผิดชอบในการจัดการหลายร้อยเธรดพร้อมกัน แต่ละหน่วยจัดการบล็อกของเธรดและจัดตารางให้ไปยังคอร์ประมวลผล

กฎไวยากรณ์: เคอร์เนลต้องกลับคืนค่าเป็น voidเนื่องจากทำงานแบบไม่ต้องรอ (asynchronously) จากโฮสต์ จึงไม่สามารถส่งค่ากลับไปยังโปรเซสเซอร์โดยตรงได้ ต้องเขียนผลลัพธ์กลับไปยังหน่วยความจำอุปกรณ์ที่จัดสรรไว้แทน

โฮสต์ (โปรเซสเซอร์ )อุปกรณ์ (GPU NVIDIA)สตรีมมิ่งหน่วยประมวลผล (SM)การเปิดใช้งานเคอร์เนล
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>